/* The file is saved in UTF-8 codepage.
 * Check: «Stereotype», Section mark-§, Copyright-©, Alpha-α, Beta-β, Smile-☺
 */
package cz.pecinovsky.english.lootp.ufo;
/*******************************************************************************
 *<pre>
 * Předchozí:   Není - toto_je_nově_definovaná_třída
 *              Ttt v projektu Ppp
 * Následující: Prozatím není
 *
 * Projekt  Ppp
 *   + Přidáno
 *   - Odebráno
 *   ~ Změněno
 *</pre>
 */


////////////////////////////////////////////////////////////////////////////////
//%%+  +++++ End of ignored starting test - place for imports +++++


/*******************************************************************************
 * Třída Číslo k zobrazení poohybujícícho se čísla ve vesmíru.
 * Předpokládá se přitom, že toto číslo bude identifikovat UFO.
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
public class Číslo
{
//== CONSTANT CLASS ATTRIBUTES =================================================

    /** Posunutí vodorovné souřadnice čísla oproti souřadnici jeho středu. */
    public static final int DX = -3;

    /** Posunutí svislé souřadnice čísla oproti souřadnici jeho středu. */
    public static final int DY = 5;


//== VARIABLE CLASS ATTRIBUTES =================================================
//== CONSTANT INSTANCE ATTRIBUTES ==============================================

    /* Oba atributy by měli být konstantní a pak už je jedno,
     * že jsou veřejné. */

    /** Číslo, které daná instnce představuje. */
    public final int    číslo;  //Uchovávané číslo

    /** Textová podoba čísla po převodu na řetězec. Bude se používat tak často,
     *  že je výhodné ji mít uloženou v atributu. */
    public final String cifry;  //Řetězcová podoba čísla



//== VARIABLE INSTANCE ATTRIBUTES ==============================================

    private double x;  //Vodorovná pozice zobrazeného čísla
    private double y;  //Svislá pozice zobrazeného čísla



//== CLASS GETTERS AND SETTERS =================================================
//== OSTATNÍ METODY TŘÍDY ======================================================

//##############################################################################
//== CONSTUCTORS AND FACTORY METHODS ===========================================

    /***************************************************************************
     * Vytvoří instanci představující zadané číslo.
     * Instance je se schopna na požádání nakreslit.
     *
     * @param číslo Číslo reprezentované danou istancí
     * @param x     Počáteční vodorovná souřadnice
     * @param y     Počáteční svislá souřadnice
     */
    public Číslo(int číslo, double x, double y)
    {
        this.číslo = číslo;
        this.cifry = "" + číslo;
        this.x = x + DX;
        this.y = y + DY;
    }


//== INSTANCE GETTERS AND SETTERS ==============================================

    /***************************************************************************
     * Vrátí číslo reprezentvané danou instancí.
     *
     * @return Číslo reprezentvané danou instancí
     */
    public int getČíslo()
    {
        return číslo;
    }


    /***************************************************************************
     * Vrátí x-ovou souřadnici pozice instance.
     *
     * @return  x-ová souřadnice.
     */
    public double getX()
    {
        return x - DX;
    }


    /***************************************************************************
     * Vrátí y-ovou souřadnici pozice instance.
     *
     * @return  y-ová souřadnice.
     */
    public double getY()
    {
        return y - DY;
    }


    /***************************************************************************
     * Nastaví novou pozici instance.
     *
     * @param x   Nová x-ová pozice instance
     * @param y   Nová y-ová pozice instance
     */
    public void setPozice(double x, double y)
    {
        this.x = x + DX;
        this.y = y + DY;
    }



//== PŘEKRYTÉ METODY IMPLEMENTOVANÝCH ROZHRANÍ =================================
//== PŘEKRYTÉ ABSTRAKTNÍ METODY RODIČOVSKÉ TŘÍDY ===============================
//== PŘEKRYTÉ KONKRÉTNÍ METODY RODIČOVSKÉ TŘÍDY ================================

    /***************************************************************************
     * Vrací textovou reprezentaci dané instance.
     *
     * @return Textový řetězec představující uchovávané číslo.
     */
    @Override
    public String toString()
    {
        return cifry;
    }


//== NOVĚ ZAVEDENÉ METODY INSTANCÍ =============================================

    /***************************************************************************
     * Bezparametrický konstruktor ...
     */
    public void nakresli()
    {
        Vesmír.V.kresliString(cifry, (int)x, (int)y);
    }


//== PRIVATE AND AUXILIARY CLASS METHODS =======================================
//== PRIVATE AND AUXILIARY INSTANCE METHODS ====================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== TESTING CLASSES AND METHODS ===============================================
}
